home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1993 July / InfoMagic USENET CD-ROM July 1993.ISO / sources / x / volume18 / olvwm-3.0 / patch2.01 next >
Encoding:
Internet Message Format  |  1992-07-22  |  50.2 KB

  1. Path: uunet!dtix!darwin.sura.net!mips!msi!dcmartin
  2. From: sdo@soliado.East.Sun.COM (Scott Oaks - Sun Consulting NYC)
  3. Newsgroups: comp.sources.x
  4. Subject: v18i048: olvwm 3.0, Patch2, Part01/04
  5. Message-ID: <1992Jul22.152348.19128@msi.com>
  6. Date: 22 Jul 92 15:23:48 GMT
  7. References: <csx-18i048-olvwm-3.0@uunet.UU.NET>
  8. Sender: dcmartin@msi.com (David C. Martin - Moderator)
  9. Organization: Molecular Simulations, Inc.
  10. Lines: 1578
  11. Approved: dcmartin@msi.com
  12. Originator: dcmartin@fascet
  13.  
  14. Submitted-by: sdo@soliado.East.Sun.COM (Scott Oaks - Sun Consulting NYC)
  15. Posting-number: Volume 18, Issue 48
  16. Archive-name: olvwm-3.0/patch2.01
  17. Patch-To: olvwm-3.0: Volume 15, Issue 167
  18.  
  19. #!/bin/sh
  20. # This is a shell archive (produced by shar 3.50)
  21. # To extract the files from this archive, save it to a file, remove
  22. # everything above the "!/bin/sh" line above, and type "sh file_name".
  23. #
  24. # made 07/22/1992 15:15 UTC by dcmartin@fascet
  25. # Source directory /home/fascet/dcmartin/csx/src
  26. #
  27. # existing files will NOT be overwritten unless -c is specified
  28. #
  29. # This is part 1 of a multipart archive                                    
  30. # do not concatenate these parts, unpack them in order with /bin/sh        
  31. #
  32. # This shar contains:
  33. # length  mode       name
  34. # ------ ---------- ------------------------------------------
  35. # 174178 -rw-r--r-- olvwm3.Patch02
  36. #
  37. if test -r _shar_seq_.tmp; then
  38.     echo 'Must unpack archives in sequence!'
  39.     echo Please unpack part `cat _shar_seq_.tmp` next
  40.     exit 1
  41. fi
  42. # ============= olvwm3.Patch02 ==============
  43. if test -f 'olvwm3.Patch02' -a X"$1" != X"-c"; then
  44.     echo 'x - skipping olvwm3.Patch02 (File already exists)'
  45.     rm -f _shar_wnt_.tmp
  46. else
  47. > _shar_wnt_.tmp
  48. echo 'x - extracting olvwm3.Patch02 (Text)'
  49. sed 's/^X//' << 'SHAR_EOF' > 'olvwm3.Patch02' &&
  50. XFrom: dcmartin@msi.com
  51. Subject: v18i047: OLVWM 3.0, Patch2, Part01/01
  52. Newsgroups: comp.sources.x
  53. Sender: dcmartin@msi.com (David C. Martin - Moderator)
  54. Approved: dcmartin@msi.com
  55. References: <csx-18i047-olvwm-3.0@uunet.UU.NET>
  56. X
  57. Submitted-by: dcmartin@msi.com
  58. Posting-number: Volume 18, Issue 47
  59. Archive-name: olvwm-3.0/patch2
  60. Patch-To: olvwm-3.0: Volume 15, Issue 167
  61. X
  62. ***************
  63. *** 1 ****
  64. ! #define PATCHLEVELv3 1    
  65. --- 1 ----
  66. ! #define PATCHLEVELv3 2
  67. *** BUILD/CHANGES    Sat Jun 13 15:50:59 1992
  68. --- src/CHANGES    Sat Jun 13 15:43:20 1992
  69. ***************
  70. *** 1,3 ****
  71. --- 1,115 ----
  72. + Version 3.2 fixes and enhancements:
  73. +     1) Yet more window placement problems (esp. with mailtool) fixed:  windows
  74. +        now try to keep their mid-points on the same virtual screen rather
  75. +        than their left points; this allows windows to be slightly off the
  76. +        monitor but still on the same screen.
  77. +     2) The AllowMoveIntoDesktop resource now permits you to move windows
  78. +        within the VDM instead of always mapping them to the current screen
  79. +     3) The boolean sense of PointerWorkspace has been changed so that it
  80. +        follows the same semantics of PaintWorkspace:  when PointerWorkspace
  81. +        is True (now the default) olvwm will set the pointer.
  82. +     4) (Some) Typos in the man page fixed
  83. +     5) Internationalization problems fixed
  84. +     6) The VDM menu no longer gets destroyed when the root menu is re-read
  85. +     7) Programs which start with multiple windows (e.g. ftptool) now start
  86. +     in the correct screen.
  87. +     8) More consistent keypad namings:  RowStart, DataStart, and RowEnd
  88. +        mappings no longer affect VDM movement; there are two new keybindings
  89. +        (UpLeft and DownLeft) which achieve that functionality in the VDM.
  90. +     9) (Some) BadWindow warnings and errors are fixed.
  91. +    10) Icons which are off the upper-left screen will be saved properly by
  92. +        the SAVE_WORKSPACE command.
  93. +    11) Using Makefile.sunpro defaults correctly installs the olvwm.info file
  94. +    12) olvwm now beeps in response to an attempt to unstick the VDM
  95. +    13) New resource SortMenuType:
  96. +        If set to Alphabetic (default) then the WINMENU will show windows
  97. +        sorted alphabetically
  98. +        If set to Youngest (previous behaviour) then the WINMENU will show
  99. +        windows from youngest to oldest
  100. +    14) WINMENU now shows only the windows for the current display
  101. +    15) New DIRMENU features:
  102. +        Output is sorted alphabetically
  103. +        Environment variables in the directory path are expanded correctly
  104. +        Can specify a regular expression as the filename to display (but
  105. +        not as the directory)
  106. +    16) A USR1 signal now restart olvwm
  107. +    17) SuspendMouseless and QuoteNextKey keyboard commands are no longer
  108. +        grabbed in basic and sunview1 keyboard mode
  109. +    18) Icon positioning when SnapToGrid is on is fixed
  110. +    19) Popups now map to the same screen as the midpoint of their base frame;
  111. +        if a frame straddles the grid (including if its larger than the
  112. +        physical screen), its popups will now map to whichever virtual screen
  113. +        contains the midpoint of the base frame.
  114. +     20) New resource GrabVirtualKeys:  If this is false (its True by default)
  115. +     then olvwm will not grab all the keys which move you around the VDM;
  116. +     this means the, e.g., VirtualUpLeft will never be active, but
  117. +     UpLeft will still work when the root or the VDM window has the
  118. +     input focus.
  119. +     21) It's now possible to set a myriad of cursors (even in color) for
  120. +     different feedback on the root, frames, buttons, icons, etc.  See
  121. +     the olvwm man page for details on the new cursor resources.
  122. +     22) NoDecor windows no longer respond (as advertised) to front/back,
  123. +     open/close, etc. commands.
  124. +     23) Resize feedback now appears in the correct place in the VDM
  125. +     24) Raise and RaiseLower are now valid actions in olvwmrc 
  126. +     25) New Keybindings:  ToggleDragWindows, ToggleMoveGroups,
  127. +     ToggleSizeFullZoomX, and ToggleSticky to toggle the state of the
  128. +     corresponding resource.
  129. +     26) Repainting the root on exit now depends on the PaintWorkspace resource
  130. +     27) olvwmrc is now re-read whenever it has changed AND olvwm receives a
  131. +     function key keystroke (either normally or through a key it has
  132. +     grabbed).  This option can be disabled by setting VirtualReRead
  133. +     to false (true by default).
  134. +     28)  Four new resources:  NoVirtualKey, NoVirtualFKey, NoVirtualRKey,
  135. +     and NoVirtualLKey.  Each of these is a list of windows (like
  136. +     the VirtualSticky resource) in which the corresponding keys (F, R,
  137. +     L, or all) will not be grabbed when that window has focus.  However,
  138. +     this applies only to keys metioned in the .olvwmrc file; all the
  139. +     normal virtual key interfaces (meta-arrow, e.g.) will still function.
  140. +     It's an interface only a Wall Street trader could love.
  141. +    29)  New Keybinding SaveWorkspace for a key to save the workspace.
  142. +    30)  Synthetic events can now be received by olvwm:  in order to do so,
  143. +     you must start olvwm with the -allowSynthetic option and you must set
  144. +     the SyntheticEvents resource to True.  The SyntheticEvents resource can be
  145. +     toggled to allow/disallow events, but it olvwm only pays attention to it
  146. +     if the -allowSynthetic option is given.
  147. +     31)  Some memory problems fixed
  148. +     32) 2d titles in Click-to-Type or InvertFocusMode are now drawn correctly
  149. X  Version 3.1 fixes:
  150. X      1) Windows/popups/icons should all stay on the same screen better
  151. X  
  152. *** BUILD/Error.c    Sat Jun 13 15:50:07 1992
  153. --- src/Error.c    Sat Jun 13 15:43:20 1992
  154. ***************
  155. *** 4,10 ****
  156. X   *      file for terms of the license.
  157. X   */
  158. X  
  159. ! #ident "@(#)Error.c    1.1 olvwm version 1/3/92"
  160. X  
  161. X  /*
  162. X   * Based on
  163. --- 4,10 ----
  164. X   *      file for terms of the license.
  165. X   */
  166. X  
  167. ! #ident "@(#)Error.c    1.2 olvwm version 6/13/92"
  168. X  
  169. X  /*
  170. X   * Based on
  171. ***************
  172. *** 76,82 ****
  173. X      {0,    ~BWin,    BWin},    /* 18, X_ChangeProperty */
  174. X      {0,    BAll,    0},    /* 19, X_DeleteProperty */
  175. X      {0,    ~BWin,    BWin},    /* 20, X_GetProperty */
  176. !     {0,    BAll,    0},    /* 21, X_ListProperties */
  177. X      {0,    BAll,    0},    /* 22, X_SetSelectionOwner */
  178. X      {0,    BAll,    0},    /* 23, X_GetSelectionOwner */
  179. X      {0,    BAll,    0},    /* 24, X_ConvertSelection */
  180. --- 76,82 ----
  181. X      {0,    ~BWin,    BWin},    /* 18, X_ChangeProperty */
  182. X      {0,    BAll,    0},    /* 19, X_DeleteProperty */
  183. X      {0,    ~BWin,    BWin},    /* 20, X_GetProperty */
  184. !     {0,    BAll,    BWin},    /* 21, X_ListProperties */
  185. X      {0,    BAll,    0},    /* 22, X_SetSelectionOwner */
  186. X      {0,    BAll,    0},    /* 23, X_GetSelectionOwner */
  187. X      {0,    BAll,    0},    /* 24, X_ConvertSelection */
  188. ***************
  189. *** 168,174 ****
  190. X      {0,    BAll,    0},    /* 110, X_ListHosts */
  191. X      {0,    BAll,    0},    /* 111, X_SetAccessControl */
  192. X      {0,    BAll,    0},    /* 112, X_SetCloseDownMode */
  193. !     {0,    BAll,    0},    /* 113, X_KillClient */
  194. X      {0,    BAll,    0},    /* 114, X_RotateProperties */
  195. X      {0,    BAll,    0},    /* 115, X_ForceScreenSaver */
  196. X      {0,    BAll,    0},    /* 116, X_SetPointerMapping */
  197. --- 168,174 ----
  198. X      {0,    BAll,    0},    /* 110, X_ListHosts */
  199. X      {0,    BAll,    0},    /* 111, X_SetAccessControl */
  200. X      {0,    BAll,    0},    /* 112, X_SetCloseDownMode */
  201. !     {0,    BAll,    BWin},    /* 113, X_KillClient */
  202. X      {0,    BAll,    0},    /* 114, X_RotateProperties */
  203. X      {0,    BAll,    0},    /* 115, X_ForceScreenSaver */
  204. X      {0,    BAll,    0},    /* 116, X_SetPointerMapping */
  205. ***************
  206. *** 225,235 ****
  207. X          /*NOTREACHED*/
  208. X      }
  209. X  
  210. X      errBitmask = 1 << event->error_code;
  211. X  
  212. !     if (errBitmask & errorTable[event->request_code].ignore)
  213. X          return 0;
  214. !     else if (errBitmask & errorTable[event->request_code].warning)
  215. X      {
  216. X                 (void) fprintf(stderr, gettext("olvwm: Warning, X Error: %s\n"),
  217. X                                buffer);
  218. --- 225,238 ----
  219. X          /*NOTREACHED*/
  220. X      }
  221. X  
  222. X      errBitmask = 1 << event->error_code;
  223. X  
  224. !     if ((event->request_code < NXOPCODES) &&
  225. !         (errBitmask & errorTable[event->request_code].ignore))
  226. X          return 0;
  227. !     else if ((event->request_code >= NXOPCODES) ||
  228. !          (errBitmask & errorTable[event->request_code].warning))
  229. X      {
  230. X                 (void) fprintf(stderr, gettext("olvwm: Warning, X Error: %s\n"),
  231. X                                buffer);
  232. *** BUILD/Imakefile    Sat Jun 13 15:51:00 1992
  233. --- src/Imakefile    Sat Jun 13 15:43:21 1992
  234. ***************
  235. *** 28,34 ****
  236. X  DEPLIBS = 
  237. X  LOCAL_LIBRARIES = $(OLGXLIB) $(XLIB)
  238. X  
  239. ! HEADERS = cmdstream.h defaults.h environ.h events.h             \
  240. X        gettext.h globals.h group.h helpcmd.h i18n.h          \
  241. X        iconimage.h iconmask.h kbdfuncs.h list.h mem.h menu.h \
  242. X        notice.h olcursor.h olgx_impl.h ollocale.h olwm.h     \
  243. --- 28,34 ----
  244. X  DEPLIBS = 
  245. X  LOCAL_LIBRARIES = $(OLGXLIB) $(XLIB)
  246. X  
  247. ! HEADERS = cmdstream.h cursors.h defaults.h environ.h events.h   \
  248. X        gettext.h globals.h group.h helpcmd.h i18n.h          \
  249. X        iconimage.h iconmask.h kbdfuncs.h list.h mem.h menu.h \
  250. X        notice.h olcursor.h olgx_impl.h ollocale.h olwm.h     \
  251. ***************
  252. *** 46,52 ****
  253. X  MISC     = openwin-menu
  254. X  
  255. X  SRCS    = Debug.c Error.c Notice.c Select.c WinInfo.c atom.c \
  256. !       client.c cmdstream.c defaults.c environ.c evbind.c \
  257. X        events.c gettext.c group.c helpsend.c images.c kbdfuncs.c \
  258. X        list.c mem.c menu.c moveresize.c ol_button.c olwm.c olvwmrc.c \
  259. X        properties.c resources.c screen.c services.c slave.c slots.c \
  260. --- 46,52 ----
  261. X  MISC     = openwin-menu
  262. X  
  263. X  SRCS    = Debug.c Error.c Notice.c Select.c WinInfo.c atom.c \
  264. !       client.c cmdstream.c cursors.c defaults.c environ.c evbind.c \
  265. X        events.c gettext.c group.c helpsend.c images.c kbdfuncs.c \
  266. X        list.c mem.c menu.c moveresize.c ol_button.c olwm.c olvwmrc.c \
  267. X        properties.c resources.c screen.c services.c slave.c slots.c \
  268. ***************
  269. *** 58,64 ****
  270. X  
  271. X  OBJS =     \
  272. X        Debug.o Error.o Notice.o Select.o WinInfo.o atom.o \
  273. !           client.o cmdstream.o defaults.o environ.o evbind.o \
  274. X            events.o gettext.o group.o helpsend.o images.o kbdfuncs.o \ 
  275. X            list.o mem.o menu.o moveresize.o ol_button.o olwm.o olvwmrc.o \
  276. X        properties.o resources.o screen.o services.o slave.o slots.o \ 
  277. --- 58,64 ----
  278. X  
  279. X  OBJS =     \
  280. X        Debug.o Error.o Notice.o Select.o WinInfo.o atom.o \
  281. !           client.o cmdstream.o cursors.o defaults.o environ.o evbind.o \
  282. X            events.o gettext.o group.o helpsend.o images.o kbdfuncs.o \ 
  283. X            list.o mem.o menu.o moveresize.o ol_button.o olwm.o olvwmrc.o \
  284. X        properties.o resources.o screen.o services.o slave.o slots.o \ 
  285. diff -c BUILD/Makefile.sunpro src/Makefile.sunpro
  286. *** BUILD/Makefile.sunpro    Sat Jun 13 15:51:00 1992
  287. --- src/Makefile.sunpro    Sat Jun 13 15:43:21 1992
  288. ***************
  289. *** 8,14 ****
  290. X  # to that directory but still want to install the helpfile, set HELPDIR
  291. X  # to some other directory and add that directory to your HELPPATH.
  292. X  # If you don't want to install the help file at all, set HELPDIR to /dev/null.
  293. ! HELPDIR = ${OPENWINHOME}/lib/info
  294. X  
  295. X  # Where to install the man pages:  man1 dir is where olvwm.man will go;
  296. X  # and man5 dir is where olvwmrc.man will go; youmay want to set these
  297. --- 8,14 ----
  298. X  # to that directory but still want to install the helpfile, set HELPDIR
  299. X  # to some other directory and add that directory to your HELPPATH.
  300. X  # If you don't want to install the help file at all, set HELPDIR to /dev/null.
  301. ! HELPDIR = ${OPENWINHOME}/lib/help
  302. X  
  303. X  # Where to install the man pages:  man1 dir is where olvwm.man will go;
  304. X  # and man5 dir is where olvwmrc.man will go; youmay want to set these
  305. ***************
  306. *** 36,42 ****
  307. X  INC = -I${OPENWINHOME}/include
  308. X  CFLAGS = ${INC} ${DEBUG} -DOW_I18N_L3 -DSUNDAE -DSHAPE
  309. X  
  310. ! HEADERS = cmdstream.h defaults.h environ.h events.h gettext.h \
  311. X        globals.h group.h helpcmd.h i18n.h iconimage.h iconmask.h  \
  312. X        kbdfuncs.h list.h mem.h menu.h notice.h olcursor.h         \
  313. X        olgx_impl.h ollocale.h olwm.h patchlevel.h properties.h    \
  314. --- 36,42 ----
  315. X  INC = -I${OPENWINHOME}/include
  316. X  CFLAGS = ${INC} ${DEBUG} -DOW_I18N_L3 -DSUNDAE -DSHAPE
  317. X  
  318. ! HEADERS = cmdstream.h cursors.h defaults.h environ.h events.h gettext.h \
  319. X        globals.h group.h helpcmd.h i18n.h iconimage.h iconmask.h  \
  320. X        kbdfuncs.h list.h mem.h menu.h notice.h olcursor.h         \
  321. X        olgx_impl.h ollocale.h olwm.h patchlevel.h properties.h    \
  322. ***************
  323. *** 43,49 ****
  324. X        resources.h screen.h slots.h st.h virtual.h win.h
  325. X  
  326. X  SRCS = Debug.c Error.c Notice.c Select.c WinInfo.c atom.c client.c \
  327. !     cmdstream.c defaults.c environ.c evbind.c events.c gettext.c \
  328. X      group.c helpsend.c i18n.c kbdfuncs.c list.c mem.c menu.c \
  329. X       moveresize.c olwm.c properties.c resources.c screen.c services.c \
  330. X      slave.c slots.c st.c states.c usermenu.c usleep.c virtual.c \
  331. --- 43,49 ----
  332. X        resources.h screen.h slots.h st.h virtual.h win.h
  333. X  
  334. X  SRCS = Debug.c Error.c Notice.c Select.c WinInfo.c atom.c client.c \
  335. !     cmdstream.c cursors.c defaults.c environ.c evbind.c events.c gettext.c \
  336. X      group.c helpsend.c i18n.c kbdfuncs.c list.c mem.c menu.c \
  337. X       moveresize.c olwm.c properties.c resources.c screen.c services.c \
  338. X      slave.c slots.c st.c states.c usermenu.c usleep.c virtual.c \
  339. ***************
  340. *** 53,59 ****
  341. X      ol_button.c
  342. X  
  343. X  LDFLAGS = -L${OPENWINHOME}/lib
  344. ! LIBS = ${LDFLAGS} -lolgx -lX11 -lXext -ll
  345. X  
  346. X  OBJS = ${SRCS:.c=.o} ${VERSION}
  347. X  
  348. --- 53,59 ----
  349. X      ol_button.c
  350. X  
  351. X  LDFLAGS = -L${OPENWINHOME}/lib
  352. ! LIBS = ${LDFLAGS} -lolgx -lXext -lX11 -ll
  353. X  
  354. X  OBJS = ${SRCS:.c=.o} ${VERSION}
  355. X  
  356. diff -c BUILD/Notice.c src/Notice.c
  357. *** BUILD/Notice.c    Sat Jun 13 15:50:27 1992
  358. --- src/Notice.c    Sat Jun 13 15:43:21 1992
  359. ***************
  360. *** 4,10 ****
  361. X   *      file for terms of the license.
  362. X   */
  363. X  
  364. ! #ident "@(#)Notice.c    1.1 olvwm version 1/3/92"
  365. X  
  366. X  /*
  367. X   * Based on
  368. --- 4,10 ----
  369. X   *      file for terms of the license.
  370. X   */
  371. X  
  372. ! #ident "@(#)Notice.c    1.2 olvwm version 6/13/92"
  373. X  
  374. X  /*
  375. X   * Based on
  376. ***************
  377. *** 338,344 ****
  378. X              /* need to move each line further down the screen */
  379. X              MIN_BOX_TOP + GRV.TextFontInfo->ascent * ( ii + 1 )
  380. X                  + ( MIN_STRING_VSPACE * ii ),
  381. !             0, False, OLGX_NORMAL );
  382. X  
  383. X      /* put buttons in - notice that it's a single row */
  384. X      /* row of buttons should be centered within available space,
  385. --- 338,344 ----
  386. X              /* need to move each line further down the screen */
  387. X              MIN_BOX_TOP + GRV.TextFontInfo->ascent * ( ii + 1 )
  388. X                  + ( MIN_STRING_VSPACE * ii ),
  389. !             0, OLGX_NORMAL );
  390. X  
  391. X      /* put buttons in - notice that it's a single row */
  392. X      /* row of buttons should be centered within available space,
  393. *** BUILD/client.c    Sat Jun 13 15:50:31 1992
  394. --- src/client.c    Sat Jun 13 15:49:02 1992
  395. ***************
  396. *** 7,13 ****
  397. X  /* client.c - functions relating to clients as a whole 
  398. X   */
  399. X  
  400. ! #ident    "@(#)client.c    1.1 olvwm version 1/3/92"
  401. X  
  402. X  /*
  403. X   * Based on
  404. --- 7,13 ----
  405. X  /* client.c - functions relating to clients as a whole 
  406. X   */
  407. X  
  408. ! #ident    "@(#)client.c    1.2 olvwm version 6/13/92"
  409. X  
  410. X  /*
  411. X   * Based on
  412. ***************
  413. *** 111,118 ****
  414. X  * private functions
  415. X  ***************************************************************************/
  416. X  
  417. - static void clientSetBusy();
  418. X  /*
  419. X   * setComposeLed - sets the compose led to the new mode iff different than
  420. X   *           the current mode.
  421. --- 111,116 ----
  422. ***************
  423. *** 375,380 ****
  424. --- 373,379 ----
  425. X      {
  426. X          IconHide(cli, cli->iconwin);
  427. X      }
  428. +     IconUnparent(cli, cli->iconwin);
  429. X  
  430. X      frameInfo = cli->framewin;
  431. X      paneInfo = (WinPane*)(frameInfo->fcore.panewin);
  432. ***************
  433. *** 480,485 ****
  434. --- 479,485 ----
  435. X      }
  436. X  
  437. X      /* destroy the window resources associated with the client */
  438. +     IconUnparent(cli, cli->iconwin);
  439. X      WinCallDestroy(cli);
  440. X  
  441. X      GroupRemove(cli->groupid, cli);
  442. ***************
  443. *** 1159,1165 ****
  444. X  }
  445. X  
  446. X  /*
  447. !  * ClientSetBusy -- the busy state has (possibly) been changed for a client.
  448. X   *    if the client is going from normal to busy:
  449. X   *          mark the client as busy
  450. X   *          put up a busy window
  451. --- 1159,1165 ----
  452. X  }
  453. X  
  454. X  /*
  455. !  * ClientUpdateBusy -- the busy state has (possibly) been changed for a client.
  456. X   *    if the client is going from normal to busy:
  457. X   *          mark the client as busy
  458. X   *          put up a busy window
  459. ***************
  460. *** 1229,1235 ****
  461. X  {
  462. X      List    *l = ActiveClientList;
  463. X      Client    *cli;
  464. X  
  465. X      for (cli = ListEnum(&l); cli != NULL; cli = ListEnum(&l)) {
  466. X          if (cli->framewin && cli->framewin->fcore.panewin &&
  467. --- 1229,1234 ----
  468. diff -c BUILD/evbind.c src/evbind.c
  469. *** BUILD/evbind.c    Sat Jun 13 15:50:33 1992
  470. --- src/evbind.c    Sat Jun 13 15:43:22 1992
  471. ***************
  472. *** 4,10 ****
  473. X   *      file for terms of the license.
  474. X   */
  475. X  
  476. ! #ident    "@(#)evbind.c    1.1 olvwm version 1/3/92"
  477. X  
  478. X  /*
  479. X   * Based on
  480. --- 4,10 ----
  481. X   *      file for terms of the license.
  482. X   */
  483. X  
  484. ! #ident    "@(#)evbind.c    1.2 olvwm version 6/13/92"
  485. X  
  486. X  /*
  487. X   * Based on
  488. ***************
  489. *** 87,94 ****
  490. X      XrmValue value;
  491. X      ModDescriptor *d;
  492. X      unsigned int polyStringToModifier();
  493. -     static XrmBinding bindings[] =
  494. -     { XrmBindTightly, XrmBindTightly, XrmBindTightly };
  495. X  
  496. X      classlist[0] = OpenWinQ;
  497. X      classlist[1] = modClassQ;
  498. --- 87,92 ----
  499. ***************
  500. *** 434,446 ****
  501. X      ACTION_TOGGLE_PIN,        KD_FULL
  502. X  }, {
  503. X      "SuspendMouseless",        "z+Alt",            keySuspend,
  504. !     ACTION_NONE,            KD_BASIC_FULL
  505. X  }, {
  506. X      "ResumeMouseless",        "Z+Alt",            keyResume,
  507. !     ACTION_NONE,            KD_IMMUNE | KD_BASIC_FULL
  508. X  }, {
  509. X      "QuoteNextKey",            "q+Alt",            keyQuoteNext,
  510. !     ACTION_NONE,            KD_BASIC_FULL
  511. X  }, {
  512. X      "Refresh",            "F8+Alt",            KeyRefresh,
  513. X      ACTION_NONE,            KD_FULL
  514. --- 432,444 ----
  515. X      ACTION_TOGGLE_PIN,        KD_FULL
  516. X  }, {
  517. X      "SuspendMouseless",        "z+Alt",            keySuspend,
  518. !     ACTION_NONE,            KD_FULL
  519. X  }, {
  520. X      "ResumeMouseless",        "Z+Alt",            keyResume,
  521. !     ACTION_NONE,            KD_IMMUNE | KD_FULL
  522. X  }, {
  523. X      "QuoteNextKey",            "q+Alt",            keyQuoteNext,
  524. !     ACTION_NONE,            KD_FULL
  525. X  }, {
  526. X      "Refresh",            "F8+Alt",            KeyRefresh,
  527. X      ACTION_NONE,            KD_FULL
  528. ***************
  529. *** 480,485 ****
  530. --- 478,498 ----
  531. X  }, {
  532. X      "RaiseLower",            "L5",         KeyRaiseLowerPointer,
  533. X      ACTION_NONE,            KD_ALWAYS
  534. + }, {
  535. +     "ToggleFullSizeZoomX",        "F3+Alt+Shift",    KeyToggleFullSizeZoomX,
  536. +     ACTION_NONE,            KD_FULL
  537. + }, {
  538. +     "ToggleDragWindow",        "F6+Alt+Shift",    KeyToggleDragWindow,
  539. +     ACTION_NONE,            KD_FULL
  540. + }, {
  541. +     "ToggleMoveGroups",        "g+Alt",           KeyToggleMoveGroups,
  542. +     ACTION_NONE,            KD_FULL
  543. + }, {
  544. +     "ToggleSticky",                "s+Alt",           KeyToggleSticky,
  545. +     ACTION_NONE,            KD_FULL
  546. + }, {
  547. +     "SaveWorkspace",        "F10+Meta+Alt+Shift", KeySaveWorkspace,
  548. +     ACTION_NONE,            KD_ALWAYS
  549. X  },
  550. X  
  551. X  /*
  552. ***************
  553. *** 488,625 ****
  554. X   * modifier are grabbed and are always active, otherwise they fall through
  555. X   * to the no focus window which moves the vdm
  556. X   *
  557. -  * We don't have a nofocus action for R7 and R13 since they already have
  558. -  * an action above
  559. X   */
  560. X     {    "VirtualUp",            "Up+Meta",        KeyMoveVDM,
  561. !     ACTION_UP,            KD_ALWAYS                },
  562. X     {    "HalfUp",            "Up+Shift",        NULLFUNC,
  563. !     ACTION_HALF_UP,                KD_ALWAYS                },
  564. X     {    "VirtualHalfUp",        "Up+Shift+Meta",    KeyMoveVDM,
  565. !     ACTION_HALF_UP,            KD_ALWAYS                },
  566. X     {    "VirtualJumpUp",        "Up+Ctrl+Meta",    KeyMoveVDM,
  567. !     ACTION_JUMP_UP,            KD_ALWAYS                },
  568. X  
  569. X     {    "VirtualDown",            "Down+Meta",    KeyMoveVDM,
  570. !     ACTION_DOWN,            KD_ALWAYS                },
  571. X     {    "HalfDown",            "Down+Shift",    NULLFUNC,
  572. !     ACTION_HALF_DOWN,            KD_ALWAYS                },
  573. X     {    "VirtualHalfDown",        "Down+Shift+Meta",    KeyMoveVDM,
  574. !     ACTION_HALF_DOWN,        KD_ALWAYS                },
  575. X     {    "VirtualJumpDown",        "Down+Ctrl+Meta",    KeyMoveVDM,
  576. !     ACTION_JUMP_DOWN,        KD_ALWAYS                },
  577. X  
  578. X     {    "VirtualLeft",            "Left+Meta",    KeyMoveVDM,
  579. !     ACTION_LEFT,            KD_ALWAYS                },
  580. X     {    "HalfLeft",            "Left+Shift",    NULLFUNC,
  581. !     ACTION_HALF_LEFT,        KD_ALWAYS                },
  582. X     {    "VirtualHalfLeft",        "Left+Shift+Meta",    KeyMoveVDM,
  583. !     ACTION_HALF_LEFT,        KD_ALWAYS                },
  584. X     {    "VirtualJumpLeft",        "Left+Ctrl+Meta",    KeyMoveVDM,
  585. !     ACTION_JUMP_LEFT,        KD_ALWAYS                },
  586. X  
  587. X     {    "VirtualRight",            "Right+Meta",    KeyMoveVDM,
  588. !     ACTION_RIGHT,            KD_ALWAYS                },
  589. X     {    "HalfRight",            "Right+Shift",    NULLFUNC,
  590. !     ACTION_HALF_RIGHT,        KD_ALWAYS                },
  591. X     {    "VirtualHalfRight",        "Right+Shift+Meta",    KeyMoveVDM,
  592. !     ACTION_HALF_RIGHT,        KD_ALWAYS                },
  593. X     {    "VirtualJumpRight",        "Right+Ctrl+Meta",    KeyMoveVDM,
  594. !     ACTION_JUMP_RIGHT,        KD_ALWAYS                },
  595. X  
  596. X     {    "VirtualUpLeft",        "R7+Meta",        KeyMoveVDM,
  597. !     ACTION_UPLEFT,            KD_ALWAYS                },
  598. X     {    "JumpUpLeft",            "R7+Ctrl",        NULLFUNC,
  599. !     ACTION_JUMP_UPLEFT,        KD_ALWAYS                },
  600. X     {    "VirtualJumpUpLeft",        "R7+Ctrl+Meta",    KeyMoveVDM,
  601. !     ACTION_JUMP_UPLEFT,        KD_ALWAYS                },
  602. X     {    "HalfUpLeft",            "R7+Shift",        NULLFUNC,
  603. !     ACTION_HALF_UPLEFT,        KD_ALWAYS                },
  604. X     {    "VirtualHalfUpLeft",        "R7+Shift+Meta",    KeyMoveVDM,
  605. !     ACTION_HALF_UPLEFT,        KD_ALWAYS                },
  606. X  
  607. X     {    "VirtualUpRight",        "R9+Meta",        KeyMoveVDM,
  608. !     ACTION_UPRIGHT,            KD_ALWAYS                },
  609. X     {    "UpRight",            "R9",        NULLFUNC,
  610. !     ACTION_UPRIGHT,            KD_ALWAYS                },
  611. X     {    "JumpUpRight",            "R9+Ctrl",        NULLFUNC,
  612. !     ACTION_JUMP_UPRIGHT,        KD_ALWAYS                },
  613. X     {    "VirtualJumpUpRight",        "R9+Ctrl+Meta",    KeyMoveVDM,
  614. !     ACTION_JUMP_UPRIGHT,        KD_ALWAYS                },
  615. X     {    "HalfUpRight",            "R9+Shift",        NULLFUNC,
  616. !     ACTION_HALF_UPRIGHT,        KD_ALWAYS                },
  617. X     {    "VirtualHalfUpRight",        "R9+Shift+Meta",    KeyMoveVDM,
  618. !     ACTION_HALF_UPRIGHT,        KD_ALWAYS                },
  619. X  
  620. X     {    "VirtualDownLeft",        "R13+Meta",        KeyMoveVDM,
  621. !     ACTION_DOWNLEFT,        KD_ALWAYS                },
  622. X     {    "JumpDownLeft",            "R13+Ctrl",        NULLFUNC,
  623. !     ACTION_JUMP_DOWNLEFT,        KD_ALWAYS                },
  624. X     {    "VirtualJumpDownLeft",        "R13+Ctrl+Meta",    KeyMoveVDM,
  625. !     ACTION_JUMP_DOWNLEFT,        KD_ALWAYS                },
  626. X     {    "HalfDownLeft",            "R13+Shift",    NULLFUNC,
  627. !     ACTION_HALF_DOWNLEFT,        KD_ALWAYS                },
  628. X     {    "VirtualHalfDownLeft",        "R13+Shift+Meta",    KeyMoveVDM,
  629. !     ACTION_HALF_DOWNLEFT,        KD_ALWAYS                },
  630. X  
  631. X     {    "VirtualDownRight",        "R15+Meta",        KeyMoveVDM,
  632. !     ACTION_DOWNRIGHT,        KD_ALWAYS                },
  633. X     {    "DownRight",            "R15",        NULLFUNC,
  634. !     ACTION_DOWNRIGHT,        KD_ALWAYS                },
  635. X     {    "JumpDownRight",        "R15+Ctrl",        NULLFUNC,
  636. !     ACTION_JUMP_DOWNRIGHT,        KD_ALWAYS                },
  637. X     {    "VirtualJumpDownRight",        "R15+Ctrl+Meta",    KeyMoveVDM,
  638. !     ACTION_JUMP_DOWNRIGHT,        KD_ALWAYS                },
  639. X     {    "HalfDownRight",        "R15+Shift",    NULLFUNC,
  640. !     ACTION_HALF_DOWNRIGHT,        KD_ALWAYS                },
  641. X     {    "VirtualHalfDownRight",        "R15+Shift+Meta",    KeyMoveVDM,
  642. !     ACTION_HALF_DOWNRIGHT,        KD_ALWAYS                },
  643. X  
  644. X     {    "VirtualHome",                "R11+Meta",        KeyMoveVDM,
  645. !     ACTION_HOME,                KD_ALWAYS                },
  646. X     {    "GoHome",            "R11",        NULLFUNC,
  647. !     ACTION_HOME,            KD_ALWAYS                },
  648. X  
  649. X     {    "VirtualScreen1",        "F1+Meta",        KeyMoveVDM,
  650. !     ACTION_GOTO_1,            KD_ALWAYS                },
  651. X     {    "Screen1",                "F1",        NULLFUNC,
  652. !     ACTION_GOTO_1,            KD_ALWAYS                },
  653. X     {    "VirtualScreen2",        "F2+Meta",        KeyMoveVDM,
  654. !     ACTION_GOTO_2,            KD_ALWAYS                },
  655. X     {    "Screen2",                "F2",        NULLFUNC,
  656. !     ACTION_GOTO_2,            KD_ALWAYS                },
  657. X     {    "VirtualScreen3",        "F3+Meta",        KeyMoveVDM,
  658. !     ACTION_GOTO_3,            KD_ALWAYS                },
  659. X     {    "Screen3",                "F3",        NULLFUNC,
  660. !     ACTION_GOTO_3,            KD_ALWAYS                },
  661. X     {    "VirtualScreen4",        "F4+Meta",        KeyMoveVDM,
  662. !     ACTION_GOTO_4,            KD_ALWAYS                },
  663. X     {    "Screen4",                "F4",        NULLFUNC,
  664. !     ACTION_GOTO_4,            KD_ALWAYS                },
  665. X     {    "VirtualScreen5",        "F5+Meta",        KeyMoveVDM,
  666. !     ACTION_GOTO_5,            KD_ALWAYS                },
  667. X     {    "Screen5",                "F5",        NULLFUNC,
  668. !     ACTION_GOTO_5,            KD_ALWAYS                },
  669. X     {    "VirtualScreen6",        "F6+Meta",        KeyMoveVDM,
  670. !     ACTION_GOTO_6,            KD_ALWAYS                },
  671. X     {    "Screen6",                "F6",        NULLFUNC,
  672. !     ACTION_GOTO_6,            KD_ALWAYS                },
  673. X     {    "VirtualScreen7",        "F7+Meta",        KeyMoveVDM,
  674. !     ACTION_GOTO_7,            KD_ALWAYS                },
  675. X     {    "Screen7",                "F7",        NULLFUNC,
  676. !     ACTION_GOTO_7,            KD_ALWAYS                },
  677. X     {    "VirtualScreen8",        "F8+Meta",        KeyMoveVDM,
  678. !     ACTION_GOTO_8,            KD_ALWAYS                },
  679. X     {    "Screen8",                "F8",        NULLFUNC,
  680. !     ACTION_GOTO_8,            KD_ALWAYS                },
  681. X     {    "VirtualScreen9",        "F9+Meta",        KeyMoveVDM,
  682. !     ACTION_GOTO_9,            KD_ALWAYS                },
  683. X     {    "Screen9",                "F9",        NULLFUNC,
  684. !     ACTION_GOTO_9,            KD_ALWAYS                },
  685. X     {    "VirtualScreen10",        "F10+Meta",        KeyMoveVDM,
  686. !     ACTION_GOTO_10,            KD_ALWAYS                },
  687. X     {    "Screen10",                "F10",        NULLFUNC,
  688. !     ACTION_GOTO_10,            KD_ALWAYS                },
  689. X  };
  690. X  
  691. X  #define NUMKEYDESCRIPTORS (sizeof(KeyDescriptorTable)/sizeof(KeyDescriptor))
  692. --- 501,640 ----
  693. X   * modifier are grabbed and are always active, otherwise they fall through
  694. X   * to the no focus window which moves the vdm
  695. X   *
  696. X   */
  697. X     {    "VirtualUp",            "Up+Meta",        KeyMoveVDM,
  698. !     ACTION_UP,            KD_VIRTUAL                },
  699. X     {    "HalfUp",            "Up+Shift",        NULLFUNC,
  700. !     ACTION_HALF_UP,                KD_VIRTUAL                },
  701. X     {    "VirtualHalfUp",        "Up+Shift+Meta",    KeyMoveVDM,
  702. !     ACTION_HALF_UP,            KD_VIRTUAL                },
  703. X     {    "VirtualJumpUp",        "Up+Ctrl+Meta",    KeyMoveVDM,
  704. !     ACTION_JUMP_UP,            KD_VIRTUAL                },
  705. X  
  706. X     {    "VirtualDown",            "Down+Meta",    KeyMoveVDM,
  707. !     ACTION_DOWN,            KD_VIRTUAL                },
  708. X     {    "HalfDown",            "Down+Shift",    NULLFUNC,
  709. !     ACTION_HALF_DOWN,            KD_VIRTUAL                },
  710. X     {    "VirtualHalfDown",        "Down+Shift+Meta",    KeyMoveVDM,
  711. !     ACTION_HALF_DOWN,        KD_VIRTUAL                },
  712. X     {    "VirtualJumpDown",        "Down+Ctrl+Meta",    KeyMoveVDM,
  713. !     ACTION_JUMP_DOWN,        KD_VIRTUAL                },
  714. X  
  715. X     {    "VirtualLeft",            "Left+Meta",    KeyMoveVDM,
  716. !     ACTION_LEFT,            KD_VIRTUAL                },
  717. X     {    "HalfLeft",            "Left+Shift",    NULLFUNC,
  718. !     ACTION_HALF_LEFT,        KD_VIRTUAL                },
  719. X     {    "VirtualHalfLeft",        "Left+Shift+Meta",    KeyMoveVDM,
  720. !     ACTION_HALF_LEFT,        KD_VIRTUAL                },
  721. X     {    "VirtualJumpLeft",        "Left+Ctrl+Meta",    KeyMoveVDM,
  722. !     ACTION_JUMP_LEFT,        KD_VIRTUAL                },
  723. X  
  724. X     {    "VirtualRight",            "Right+Meta",    KeyMoveVDM,
  725. !     ACTION_RIGHT,            KD_VIRTUAL                },
  726. X     {    "HalfRight",            "Right+Shift",    NULLFUNC,
  727. !     ACTION_HALF_RIGHT,        KD_VIRTUAL                },
  728. X     {    "VirtualHalfRight",        "Right+Shift+Meta",    KeyMoveVDM,
  729. !     ACTION_HALF_RIGHT,        KD_VIRTUAL                },
  730. X     {    "VirtualJumpRight",        "Right+Ctrl+Meta",    KeyMoveVDM,
  731. !     ACTION_JUMP_RIGHT,        KD_VIRTUAL                },
  732. X  
  733. +    {    "UpLeft",            "R7",        NULLFUNC,
  734. +     ACTION_UPLEFT,            KD_VIRTUAL                },
  735. X     {    "VirtualUpLeft",        "R7+Meta",        KeyMoveVDM,
  736. !     ACTION_UPLEFT,            KD_VIRTUAL                },
  737. X     {    "JumpUpLeft",            "R7+Ctrl",        NULLFUNC,
  738. !     ACTION_JUMP_UPLEFT,        KD_VIRTUAL                },
  739. X     {    "VirtualJumpUpLeft",        "R7+Ctrl+Meta",    KeyMoveVDM,
  740. !     ACTION_JUMP_UPLEFT,        KD_VIRTUAL                },
  741. X     {    "HalfUpLeft",            "R7+Shift",        NULLFUNC,
  742. !     ACTION_HALF_UPLEFT,        KD_VIRTUAL                },
  743. X     {    "VirtualHalfUpLeft",        "R7+Shift+Meta",    KeyMoveVDM,
  744. !     ACTION_HALF_UPLEFT,        KD_VIRTUAL                },
  745. X  
  746. X     {    "VirtualUpRight",        "R9+Meta",        KeyMoveVDM,
  747. !     ACTION_UPRIGHT,            KD_VIRTUAL                },
  748. X     {    "UpRight",            "R9",        NULLFUNC,
  749. !     ACTION_UPRIGHT,            KD_VIRTUAL                },
  750. X     {    "JumpUpRight",            "R9+Ctrl",        NULLFUNC,
  751. !     ACTION_JUMP_UPRIGHT,        KD_VIRTUAL                },
  752. X     {    "VirtualJumpUpRight",        "R9+Ctrl+Meta",    KeyMoveVDM,
  753. !     ACTION_JUMP_UPRIGHT,        KD_VIRTUAL                },
  754. X     {    "HalfUpRight",            "R9+Shift",        NULLFUNC,
  755. !     ACTION_HALF_UPRIGHT,        KD_VIRTUAL                },
  756. X     {    "VirtualHalfUpRight",        "R9+Shift+Meta",    KeyMoveVDM,
  757. !     ACTION_HALF_UPRIGHT,        KD_VIRTUAL                },
  758. X  
  759. +    {    "DownLeft",            "R13",        NULLFUNC,
  760. +     ACTION_DOWNLEFT,        KD_VIRTUAL                },
  761. X     {    "VirtualDownLeft",        "R13+Meta",        KeyMoveVDM,
  762. !     ACTION_DOWNLEFT,        KD_VIRTUAL                },
  763. X     {    "JumpDownLeft",            "R13+Ctrl",        NULLFUNC,
  764. !     ACTION_JUMP_DOWNLEFT,        KD_VIRTUAL                },
  765. X     {    "VirtualJumpDownLeft",        "R13+Ctrl+Meta",    KeyMoveVDM,
  766. !     ACTION_JUMP_DOWNLEFT,        KD_VIRTUAL                },
  767. X     {    "HalfDownLeft",            "R13+Shift",    NULLFUNC,
  768. !     ACTION_HALF_DOWNLEFT,        KD_VIRTUAL                },
  769. X     {    "VirtualHalfDownLeft",        "R13+Shift+Meta",    KeyMoveVDM,
  770. !     ACTION_HALF_DOWNLEFT,        KD_VIRTUAL                },
  771. X  
  772. X     {    "VirtualDownRight",        "R15+Meta",        KeyMoveVDM,
  773. !     ACTION_DOWNRIGHT,        KD_VIRTUAL                },
  774. X     {    "DownRight",            "R15",        NULLFUNC,
  775. !     ACTION_DOWNRIGHT,        KD_VIRTUAL                },
  776. X     {    "JumpDownRight",        "R15+Ctrl",        NULLFUNC,
  777. !     ACTION_JUMP_DOWNRIGHT,        KD_VIRTUAL                },
  778. X     {    "VirtualJumpDownRight",        "R15+Ctrl+Meta",    KeyMoveVDM,
  779. !     ACTION_JUMP_DOWNRIGHT,        KD_VIRTUAL                },
  780. X     {    "HalfDownRight",        "R15+Shift",    NULLFUNC,
  781. !     ACTION_HALF_DOWNRIGHT,        KD_VIRTUAL                },
  782. X     {    "VirtualHalfDownRight",        "R15+Shift+Meta",    KeyMoveVDM,
  783. !     ACTION_HALF_DOWNRIGHT,        KD_VIRTUAL                },
  784. X  
  785. X     {    "VirtualHome",                "R11+Meta",        KeyMoveVDM,
  786. !     ACTION_HOME,                KD_VIRTUAL                },
  787. X     {    "GoHome",            "R11",        NULLFUNC,
  788. !     ACTION_HOME,            KD_VIRTUAL                },
  789. X  
  790. X     {    "VirtualScreen1",        "F1+Meta",        KeyMoveVDM,
  791. !     ACTION_GOTO_1,            KD_VIRTUAL                },
  792. X     {    "Screen1",                "F1",        NULLFUNC,
  793. !     ACTION_GOTO_1,            KD_VIRTUAL                },
  794. X     {    "VirtualScreen2",        "F2+Meta",        KeyMoveVDM,
  795. !     ACTION_GOTO_2,            KD_VIRTUAL                },
  796. X     {    "Screen2",                "F2",        NULLFUNC,
  797. !     ACTION_GOTO_2,            KD_VIRTUAL                },
  798. X     {    "VirtualScreen3",        "F3+Meta",        KeyMoveVDM,
  799. !     ACTION_GOTO_3,            KD_VIRTUAL                },
  800. X     {    "Screen3",                "F3",        NULLFUNC,
  801. !     ACTION_GOTO_3,            KD_VIRTUAL                },
  802. X     {    "VirtualScreen4",        "F4+Meta",        KeyMoveVDM,
  803. !     ACTION_GOTO_4,            KD_VIRTUAL                },
  804. X     {    "Screen4",                "F4",        NULLFUNC,
  805. !     ACTION_GOTO_4,            KD_VIRTUAL                },
  806. X     {    "VirtualScreen5",        "F5+Meta",        KeyMoveVDM,
  807. !     ACTION_GOTO_5,            KD_VIRTUAL                },
  808. X     {    "Screen5",                "F5",        NULLFUNC,
  809. !     ACTION_GOTO_5,            KD_VIRTUAL                },
  810. X     {    "VirtualScreen6",        "F6+Meta",        KeyMoveVDM,
  811. !     ACTION_GOTO_6,            KD_VIRTUAL                },
  812. X     {    "Screen6",                "F6",        NULLFUNC,
  813. !     ACTION_GOTO_6,            KD_VIRTUAL                },
  814. X     {    "VirtualScreen7",        "F7+Meta",        KeyMoveVDM,
  815. !     ACTION_GOTO_7,            KD_VIRTUAL                },
  816. X     {    "Screen7",                "F7",        NULLFUNC,
  817. !     ACTION_GOTO_7,            KD_VIRTUAL                },
  818. X     {    "VirtualScreen8",        "F8+Meta",        KeyMoveVDM,
  819. !     ACTION_GOTO_8,            KD_VIRTUAL                },
  820. X     {    "Screen8",                "F8",        NULLFUNC,
  821. !     ACTION_GOTO_8,            KD_VIRTUAL                },
  822. X     {    "VirtualScreen9",        "F9+Meta",        KeyMoveVDM,
  823. !     ACTION_GOTO_9,            KD_VIRTUAL                },
  824. X     {    "Screen9",                "F9",        NULLFUNC,
  825. !     ACTION_GOTO_9,            KD_VIRTUAL                },
  826. X     {    "VirtualScreen10",        "F10+Meta",        KeyMoveVDM,
  827. !     ACTION_GOTO_10,            KD_VIRTUAL                },
  828. X     {    "Screen10",                "F10",        NULLFUNC,
  829. !     ACTION_GOTO_10,            KD_VIRTUAL                },
  830. X  };
  831. X  
  832. X  #define NUMKEYDESCRIPTORS (sizeof(KeyDescriptorTable)/sizeof(KeyDescriptor))
  833. ***************
  834. *** 1000,1017 ****
  835. X   * root window.  Run through the binding table and un/grab the key-modifier
  836. X   * combination itself, and also combined with the Lock and NumLock (if any)
  837. X   * modifier.  There thus may be up to four actual grabs per key binding.
  838. X   */
  839. X  static void
  840. ! grabRootKeys(dpy, root, grab)
  841. X      Display *dpy;
  842. X      Window root;
  843. X      Bool grab;        /* True = grab, False = release */
  844. X  {
  845. X      KeyBinding *k;
  846. X      unsigned int NumLockMask =
  847. X      FindModifierMask(XKeysymToKeycode(dpy, XK_Num_Lock));
  848. X      for (k=KeyBindingTable; k < KeyBindingTable+bindingTableCount; ++k) {
  849. !     if (k->desc->function != NULLFUNC) {
  850. X          if (grab) {
  851. X          XGrabKey(dpy, k->keycode, k->modstate,
  852. X               root, False, GrabModeAsync, GrabModeSync);
  853. --- 1015,1038 ----
  854. X   * root window.  Run through the binding table and un/grab the key-modifier
  855. X   * combination itself, and also combined with the Lock and NumLock (if any)
  856. X   * modifier.  There thus may be up to four actual grabs per key binding.
  857. +  *
  858. +  * If virtual_only is true, we only grab the virtual root keys; this is
  859. +  * e.g. when .olvwmrc changes the keys we're interested in.
  860. X   */
  861. X  static void
  862. ! grabRootKeys(dpy, root, grab, virtual_only)
  863. X      Display *dpy;
  864. X      Window root;
  865. X      Bool grab;        /* True = grab, False = release */
  866. +     Bool virtual_only;
  867. X  {
  868. X      KeyBinding *k;
  869. X      unsigned int NumLockMask =
  870. X      FindModifierMask(XKeysymToKeycode(dpy, XK_Num_Lock));
  871. X      for (k=KeyBindingTable; k < KeyBindingTable+bindingTableCount; ++k) {
  872. !     if (k->desc->function != NULLFUNC &&
  873. !         (!virtual_only || k->desc->action == ACTION_VIRTUAL)) {
  874. X          if (grab) {
  875. X          XGrabKey(dpy, k->keycode, k->modstate,
  876. X               root, False, GrabModeAsync, GrabModeSync);
  877. ***************
  878. *** 1231,1247 ****
  879. X   * grab = False, release the keys.  Note: the screens and the keyboard binding 
  880. X   * information must be initialized prior to calling this function.
  881. X   */
  882. X  void
  883. ! GrabKeys(dpy, grab)
  884. X      Display *dpy;
  885. X      Bool grab;
  886. X  {
  887. X      List *l = ScreenInfoList;
  888. X      ScreenInfo *scr;
  889. X      for (scr = ListEnum(&l); scr != NULL; scr = ListEnum(&l))
  890. !     grabRootKeys(dpy, scr->rootid, grab);
  891. X  }
  892. X  
  893. X  
  894. X  /*
  895. X   * Remove all key grabs, zero out the binding table, and rebuild it from the 
  896. --- 1252,1277 ----
  897. X   * grab = False, release the keys.  Note: the screens and the keyboard binding 
  898. X   * information must be initialized prior to calling this function.
  899. X   */
  900. X  void
  901. ! GrabVKeys(dpy, grab, virtual_only)
  902. X      Display *dpy;
  903. X      Bool grab;
  904. +     Bool virtual_only;
  905. X  {
  906. X      List *l = ScreenInfoList;
  907. X      ScreenInfo *scr;
  908. X      for (scr = ListEnum(&l); scr != NULL; scr = ListEnum(&l))
  909. !     grabRootKeys(dpy, scr->rootid, grab, virtual_only);
  910. X  }
  911. X  
  912. + void
  913. + GrabKeys(dpy, grab)
  914. +     Display *dpy;
  915. +     Bool grab;
  916. + {
  917. +     GrabVKeys(dpy, grab, False);
  918. + }
  919. X  
  920. X  /*
  921. X   * Remove all key grabs, zero out the binding table, and rebuild it from the 
  922. ***************
  923. *** 1306,1312 ****
  924. --- 1336,1349 ----
  925. X      Bool regrab = False;
  926. X      static XrmBinding bindings[] =
  927. X      { XrmBindTightly, XrmBindTightly, XrmBindTightly };
  928. +     int    size = sizeof(mouselessMaskTable) / sizeof(mouselessMaskTable[0]);
  929. +     int    i;
  930. X  
  931. +     if (GRV.GrabVirtualKeys)
  932. +         for (i = 0; i < size; i++)
  933. +         mouselessMaskTable[i] |= KD_VIRTUAL;
  934. +      else for (i = 0; i < size; i++)
  935. +         mouselessMaskTable[i] &= ~KD_VIRTUAL;
  936. X      GrabButtons(dpy, False);
  937. X      establishModBindings(dpy, newDB);
  938. X      GrabButtons(dpy, True);
  939. ***************
  940. *** 1374,1379 ****
  941. --- 1411,1419 ----
  942. X  InitBindings(dpy)
  943. X      Display *dpy;
  944. X  {
  945. + int    size = sizeof(mouselessMaskTable) / sizeof(mouselessMaskTable[0]);
  946. + int    i;
  947. X      kbdCmdInstanceQ = XrmStringToQuark("keyboardCommand");
  948. X      kbdCmdClassQ    = XrmStringToQuark("KeyboardCommand");
  949. X  
  950. ***************
  951. *** 1380,1387 ****
  952. --- 1420,1458 ----
  953. X      modInstanceQ    = XrmStringToQuark("modifier");
  954. X      modClassQ        = XrmStringToQuark("Modifier");
  955. X  
  956. +     if (GRV.GrabVirtualKeys)
  957. +         for (i = 0; i < size; i++)
  958. +         mouselessMaskTable[i] |= KD_VIRTUAL;
  959. X      KeyBindingTable = MemCalloc(KEYBINDING_TABLE_SIZE,sizeof(KeyBinding));
  960. X      bindingTableSize = KEYBINDING_TABLE_SIZE;
  961. X      establishKeyBindings(dpy);
  962. X      establishModBindings(dpy, OlwmDB);
  963. + }
  964. + /*
  965. +  * Disable/Enable program keys in given range
  966. +  */
  967. + void
  968. + SetProgKeys(dpy, start_sym, end_sym, modstate, off)
  969. +     Display *dpy;
  970. +     KeySym start_sym;
  971. +     KeySym end_sym;
  972. +     unsigned long modstate;
  973. +     Boolean off;
  974. + {
  975. +     KeyBinding *k;
  976. +     KeySym keysym;
  977. +     extern CheckForKeyProg();
  978. +     for(k=KeyBindingTable; k < KeyBindingTable+bindingTableCount; ++k) {
  979. +       if (k->desc->action == ACTION_VIRTUAL) {
  980. +           keysym = XKeycodeToKeysym(dpy, k->keycode, 0);
  981. +           if ((modstate == 0L || (k->modstate & modstate))
  982. +                   && (start_sym == NoSymbol || keysym >= start_sym)
  983. +                   && (end_sym == NoSymbol || keysym <= end_sym)) {
  984. +               k->desc->function =
  985. +                   off ? NULLFUNC : (void (*)()) CheckForKeyProg;
  986. +           }
  987. +       }
  988. +     }
  989. X  }
  990. *** BUILD/events.c    Sat Jun 13 15:50:17 1992
  991. --- src/events.c    Sat Jun 13 15:43:22 1992
  992. ***************
  993. *** 4,10 ****
  994. X   *      file for terms of the license.
  995. X   */
  996. X  
  997. ! #ident "@(#)events.c    1.1 olvwm version 1/3/92"
  998. X  
  999. X  /*
  1000. X   * Based on
  1001. --- 4,10 ----
  1002. X   *      file for terms of the license.
  1003. X   */
  1004. X  
  1005. ! #ident "@(#)events.c    1.2 olvwm version 6/13/92"
  1006. X  
  1007. X  /*
  1008. X   * Based on
  1009. ***************
  1010. *** 435,446 ****
  1011. X           *
  1012. X           * All device events (mouse and keyboard events) have types
  1013. X           * that fall in between KeyPress and MotionNotify.
  1014. X           */
  1015. X          if (event.xany.send_event
  1016. X              && event.type <= MotionNotify
  1017. !             && event.type >= KeyPress)
  1018. X              continue;
  1019. X  
  1020. X          /*
  1021. X           * Handle MappingNotify events.  These events don't have 
  1022. --- 435,457 ----
  1023. X           *
  1024. X           * All device events (mouse and keyboard events) have types
  1025. X           * that fall in between KeyPress and MotionNotify.
  1026. +          *
  1027. +          * But, if we allow synthetic events if the correct resource
  1028. +          * is set
  1029. X           */
  1030. X          if (event.xany.send_event
  1031. X              && event.type <= MotionNotify
  1032. !             && event.type >= KeyPress
  1033. !             && (!GRV.AllowSyntheticEvents ||
  1034. !                 !GRV.SyntheticEvents))
  1035. X              continue;
  1036. !         
  1037. !         /*
  1038. !          * If its a function key, see if we need to ReRead olvwmrc
  1039. !          */
  1040. !         if ((event.type == KeyPress) && GRV.VirtualReRead &&
  1041. !             IsFunctionKey(XLookupKeysym(&event, 0)))
  1042. !             CheckOlvwmRC(dpy);
  1043. X  
  1044. X          /*
  1045. X           * Handle MappingNotify events.  These events don't have 
  1046. *** BUILD/gettext.c    Sat Jun 13 15:50:08 1992
  1047. --- src/gettext.c    Sat Jun 13 15:43:22 1992
  1048. ***************
  1049. *** 1,7 ****
  1050. --- 1,13 ----
  1051. X  /*    Copyright (c) 1990 Sun Microsystems    */
  1052. X  /*      All Rights Reserved      */
  1053. X  
  1054. + #ident  "@(#)gettext.c    1.2 olvwm version 6/13/92"
  1055. + /*
  1056. +  * Based on
  1057. X  #ident    "@(#)gettext.c    1.7    91/09/14 SMI"
  1058. +  *
  1059. +  */
  1060. X  
  1061. X  #ifdef SUNDAE
  1062. X  
  1063. ***************
  1064. *** 236,242 ****
  1065. X  gettext(msg_id)
  1066. X  char *msg_id;
  1067. X  {
  1068. !     return (dgettext(NULL, msg_id));
  1069. X  }
  1070. X  
  1071. X  
  1072. --- 242,250 ----
  1073. X  gettext(msg_id)
  1074. X  char *msg_id;
  1075. X  {
  1076. !     if (msg_id)
  1077. !         return (dgettext(NULL, msg_id));
  1078. !     return NULL;
  1079. X  }
  1080. X  
  1081. X  
  1082. *** BUILD/globals.h    Sat Jun 13 15:51:00 1992
  1083. --- src/globals.h    Sat Jun 13 15:43:23 1992
  1084. ***************
  1085. *** 4,10 ****
  1086. X   *      file for terms of the license.
  1087. X   */
  1088. X  
  1089. ! #ident    "@(#)globals.h    1.2 olvwm version 1/27/92"
  1090. X  
  1091. X  /*
  1092. X   * Based on
  1093. --- 4,10 ----
  1094. X   *      file for terms of the license.
  1095. X   */
  1096. X  
  1097. ! #ident    "@(#)globals.h    1.3 olvwm version 6/13/92"
  1098. X  
  1099. X  /*
  1100. X   * Based on
  1101. ***************
  1102. *** 27,32 ****
  1103. --- 27,34 ----
  1104. X  
  1105. X  typedef enum { UseNone, UseVDM, UseAll } ImageType;
  1106. X  
  1107. + typedef enum { SortYounger, SortAlpha } SortType;
  1108. X  typedef struct _globalResourceVariables {
  1109. X      char        *WorkspaceColor;
  1110. X      char        *WindowColor;
  1111. ***************
  1112. *** 162,167 ****
  1113. --- 164,199 ----
  1114. X      Bool        VirtualMoveGroups;
  1115. X      Bool        PointerWorkspace;
  1116. X      char        *SaveWorkspaceCmd;
  1117. +     SortType    VirtualMenuSort;
  1118. +     SortType    VirtualDirSort;
  1119. +      /* Special resize cursors */
  1120. +     char            *SpecialResizePointerData;
  1121. +     Bool            SpecialResizePointers;
  1122. +     Cursor          CornerPointers[4];
  1123. +     Cursor          ResizePointers[4];
  1124. +      /* Other Cursors */
  1125. +     Cursor          CloseUpPointer;
  1126. +     Cursor          CloseDownPointer;
  1127. +     char            *BasicPointerData;
  1128. +     char            *MovePointerData;
  1129. +     char            *BusyPointerData;
  1130. +     char            *IconPointerData;
  1131. +     char            *ResizePointerData;
  1132. +     char            *MenuPointerData;
  1133. +     char            *QuestionPointerData;
  1134. +     char            *TargetPointerData;
  1135. +     char            *PanPointerData;
  1136. +     char            *CloseUpPointerData;
  1137. +     char            *CloseDownPointerData;
  1138. +     Bool        VirtualReRead;
  1139. +     Bool        AllowSyntheticEvents;
  1140. +     Bool        SyntheticEvents;
  1141. +     List        *NoVirtualKey;
  1142. +     List        *NoVirtualLKey;
  1143. +     List        *NoVirtualFKey;
  1144. +     List        *NoVirtualRKey;
  1145. X  } GlobalResourceVariables;
  1146. X  
  1147. X  extern GlobalResourceVariables    GRV;
  1148. *** BUILD/images.c    Sat Jun 13 15:50:34 1992
  1149. --- src/images.c    Sat Jun 13 15:43:23 1992
  1150. ***************
  1151. *** 3,9 ****
  1152. X   * license
  1153. X   */
  1154. X  
  1155. ! #ident "@(#)images.c    1.1 olvwm version 1/3/92"
  1156. X  
  1157. X  /* Use small images */
  1158. X  #define SMALL_IMAGES
  1159. --- 3,9 ----
  1160. X   * license
  1161. X   */
  1162. X  
  1163. ! #ident "@(#)images.c    1.2 olvwm version 6/13/92"
  1164. X  
  1165. X  /* Use small images */
  1166. X  #define SMALL_IMAGES
  1167. ***************
  1168. *** 717,724 ****
  1169. X  0x00,0x00, 0x20,0x00, 0x50,0x00, 0x88,0x00, 0x04,0x41, 0x08,0x62, 0x10,0x54,
  1170. X  0x20,0x48, 0x40,0x40, 0x80,0x40, 0x00,0x41, 0x80,0x40, 0x40,0x40, 0xe0,0x7f,
  1171. X  };
  1172. - extern Button    openButton;
  1173. X  
  1174. X  Button *
  1175. X  MakeOpenButton(dpy, scrInfo)
  1176. --- 717,722 ----
  1177. *** BUILD/kbdfuncs.c    Sat Jun 13 15:50:24 1992
  1178. --- src/kbdfuncs.c    Sat Jun 13 15:43:23 1992
  1179. ***************
  1180. *** 4,10 ****
  1181. X   *      file for terms of the license.
  1182. X   */
  1183. X  
  1184. ! #ident    "@(#)kbdfuncs.c    1.1 olvwm version 1/3/92"
  1185. X  
  1186. X  /*
  1187. X   * Based on
  1188. --- 4,10 ----
  1189. X   *      file for terms of the license.
  1190. X   */
  1191. X  
  1192. ! #ident    "@(#)kbdfuncs.c    1.2 olvwm version 6/13/92"
  1193. X  
  1194. X  /*
  1195. X   * Based on
  1196. ***************
  1197. *** 520,525 ****
  1198. --- 520,527 ----
  1199. X       * override-redirect windows.
  1200. X       */
  1201. X      if (childUnderPointer(dpy, ke, &child, &childinfo, &cli)) {
  1202. +     if (cli->wmDecors->flags & WMNoDecor)
  1203. +         return;
  1204. X      if (cli->transientFor != 0 &&
  1205. X          GRV.KeepTransientsAbove &&
  1206. X          (owner = WIGetInfo(cli->transientFor)) != NULL &&
  1207. ***************
  1208. *** 571,577 ****
  1209. X      if (ke->type != KeyPress)
  1210. X      return;
  1211. X  
  1212. !     if (childUnderPointer(dpy, ke, &child, &childinfo, &cli))
  1213. X      ClientOpenCloseToggle(cli);
  1214. X  }
  1215. X  
  1216. --- 573,580 ----
  1217. X      if (ke->type != KeyPress)
  1218. X      return;
  1219. X  
  1220. !     if (childUnderPointer(dpy, ke, &child, &childinfo, &cli) &&
  1221. !         !(cli->wmDecors->flags & WMNoDecor))
  1222. X      ClientOpenCloseToggle(cli);
  1223. X  }
  1224. X  
  1225. ***************
  1226. *** 709,715 ****
  1227. X      if (ke->type != KeyPress)
  1228. X      return;
  1229. X  
  1230. !     if (CurrentClient->framewin != NULL)
  1231. X      ClientFront(CurrentClient);
  1232. X  }
  1233. X  
  1234. --- 712,719 ----
  1235. X      if (ke->type != KeyPress)
  1236. X      return;
  1237. X  
  1238. !     if (CurrentClient->framewin != NULL &&
  1239. !         !(CurrentClient->wmDecors->flags & WMNoDecor))
  1240. X      ClientFront(CurrentClient);
  1241. X  }
  1242. X  
  1243. ***************
  1244. *** 725,731 ****
  1245. X      if (ke->type != KeyPress)
  1246. X      return;
  1247. X  
  1248. !     if (CurrentClient->framewin != NULL)
  1249. X      ClientBack(CurrentClient);
  1250. X  }
  1251. X  
  1252. --- 729,736 ----
  1253. X      if (ke->type != KeyPress)
  1254. X      return;
  1255. X  
  1256. !     if (CurrentClient->framewin != NULL &&
  1257. !         !(CurrentClient->wmDecors->flags & WMNoDecor))
  1258. X      ClientBack(CurrentClient);
  1259. X  }
  1260. X  
  1261. ***************
  1262. *** 741,747 ****
  1263. X      if (ke->type != KeyPress)
  1264. X      return;
  1265. X  
  1266. !     if (CurrentClient->framewin != NULL)
  1267. X      ClientOpenCloseToggle(CurrentClient);
  1268. X  }
  1269. X  
  1270. --- 746,753 ----
  1271. X      if (ke->type != KeyPress)
  1272. X      return;
  1273. X  
  1274. !     if (CurrentClient->framewin != NULL &&
  1275. !         !(CurrentClient->wmDecors->flags & WMNoDecor))
  1276. X      ClientOpenCloseToggle(CurrentClient);
  1277. X  }
  1278. X  
  1279. ***************
  1280. *** 757,763 ****
  1281. X      if (ke->type != KeyPress)
  1282. X      return;
  1283. X  
  1284. !     if (CurrentClient->framewin != NULL)
  1285. X      ClientFullRestoreSizeToggle(CurrentClient);
  1286. X  }
  1287. X  
  1288. --- 763,770 ----
  1289. X      if (ke->type != KeyPress)
  1290. X      return;
  1291. X  
  1292. !     if (CurrentClient->framewin != NULL &&
  1293. !         !(CurrentClient->wmDecors->flags & WMNoDecor))
  1294. X      ClientFullRestoreSizeToggle(CurrentClient);
  1295. X  }
  1296. X  
  1297. ***************
  1298. *** 773,779 ****
  1299. X      if (ke->type != KeyPress)
  1300. X      return;
  1301. X  
  1302. !     if (CurrentClient->framewin != NULL)
  1303. X      ClientKill(CurrentClient, True);
  1304. X  }
  1305. X  
  1306. --- 780,787 ----
  1307. X      if (ke->type != KeyPress)
  1308. X      return;
  1309. X  
  1310. !     if (CurrentClient->framewin != NULL &&
  1311. !         !(CurrentClient->wmDecors->flags & WMNoDecor))
  1312. X      ClientKill(CurrentClient, True);
  1313. X  }
  1314. X  
  1315. ***************
  1316. *** 805,811 ****
  1317. X      if (ke->type != KeyPress)
  1318. X      return;
  1319. X  
  1320. !     if (CurrentClient->framewin != NULL)
  1321. X      ClientMove(CurrentClient,ke);
  1322. X  }
  1323. X  
  1324. --- 813,820 ----
  1325. X      if (ke->type != KeyPress)
  1326. X      return;
  1327. X  
  1328. !     if (CurrentClient->framewin != NULL &&
  1329. !         !(CurrentClient->wmDecors->flags & WMNoDecor))
  1330. X      ClientMove(CurrentClient,ke);
  1331. X  }
  1332. X  
  1333. ***************
  1334. *** 821,827 ****
  1335. X      if (ke->type != KeyPress)
  1336. X      return;
  1337. X  
  1338. !     if (CurrentClient->framewin != NULL)
  1339. X      ClientResize(CurrentClient, ke, keyevent, NULL, NULL);
  1340. X  }
  1341. X  
  1342. --- 830,837 ----
  1343. X      if (ke->type != KeyPress)
  1344. X      return;
  1345. X  
  1346. !     if (CurrentClient->framewin != NULL &&
  1347. !         !(CurrentClient->wmDecors->flags & WMNoDecor))
  1348. X      ClientResize(CurrentClient, ke, keyevent, NULL, NULL);
  1349. X  }
  1350. X  
  1351. ***************
  1352. *** 869,872 ****
  1353. --- 879,949 ----
  1354. X      else  {
  1355. X      ShowStandardMenu(frameInfo, ke, False);
  1356. X      }
  1357. + }
  1358. +  /*
  1359. +   * Toggle the resource FullSizeZoomX.
  1360. +   */
  1361. + void
  1362. + KeyToggleFullSizeZoomX(dpy, ke)
  1363. +      Display *dpy;
  1364. +      XKeyEvent *ke;
  1365. + {
  1366. +      if (ke->type != KeyPress)
  1367. +      return;
  1368. +      GRV.FullSizeZoomX = !GRV.FullSizeZoomX;
  1369. + }
  1370. +  /*
  1371. +   * Toggle the resource DragWindow
  1372. +   */
  1373. + void
  1374. + KeyToggleDragWindow(dpy, ke)
  1375. +      Display *dpy;
  1376. +      XKeyEvent *ke;
  1377. + {
  1378. +      if (ke->type != KeyPress)
  1379. +      return;
  1380. +      GRV.DragWindow = !GRV.DragWindow;
  1381. + }
  1382. +  /*
  1383. +   * Toggle the resource VirtualMoveGroups resource
  1384. +   */
  1385. + void
  1386. + KeyToggleMoveGroups(dpy, ke)
  1387. +      Display *dpy;
  1388. +      XKeyEvent *ke;
  1389. + {
  1390. +      if (ke->type != KeyPress)
  1391. +      return;
  1392. +      GRV.VirtualMoveGroups = !GRV.VirtualMoveGroups;
  1393. + }
  1394. + /*
  1395. +  * Perform the Stick/Unstick Action
  1396. +  */
  1397. + void
  1398. + KeyToggleSticky(dpy, ke)
  1399. +      Display *dpy;
  1400. +      XKeyEvent *ke;
  1401. + {
  1402. +      if (ke->type != KeyPress)
  1403. +      return;
  1404. +      if (CurrentClient->framewin != NULL &&
  1405. +         !(CurrentClient->wmDecors->flags & WMNoDecor))
  1406. +          ClientStickUnstickToggle(CurrentClient);
  1407. + }
  1408. + /*
  1409. +  * Save the workspace
  1410. +  */
  1411. + void
  1412. + KeySaveWorkspace(dpy, ev)
  1413. +     Display    *dpy;
  1414. +     XEvent    *ev;
  1415. + {
  1416. +     if (ev->type != KeyPress)
  1417. +     return;
  1418. +     SaveWorkspaceFunc(dpy, lookupWindow(ev), NULL, 0);
  1419. X  }
  1420. *** BUILD/kbdfuncs.h    Sat Jun 13 15:49:44 1992
  1421. --- src/kbdfuncs.h    Sat Jun 13 15:43:24 1992
  1422. ***************
  1423. *** 7,13 ****
  1424. X  #ifndef _OLWM_KBDFUNCS_H
  1425. X  #define _OLWM_KBDFUNCS_H
  1426. X  
  1427. ! #ident    "@(#)kbdfuncs.h    1.1 olvwm version 1/3/92"
  1428. X  
  1429. X  /*
  1430. X   * Based on
  1431. --- 7,13 ----
  1432. X  #ifndef _OLWM_KBDFUNCS_H
  1433. X  #define _OLWM_KBDFUNCS_H
  1434. X  
  1435. ! #ident    "@(#)kbdfuncs.h    1.2 olvwm version 6/13/92"
  1436. X  
  1437. X  /*
  1438. X   * Based on
  1439. ***************
  1440. *** 39,44 ****
  1441. --- 39,49 ----
  1442. X  extern void KeyUnlockColormap();
  1443. X  extern void KeyWindowMenu();
  1444. X  extern void KeyWorkspaceMenu();
  1445. + extern void KeyToggleFullSizeZoomX();  /* Toggle resource FullSizeZoomX. */
  1446. + extern void KeyToggleDragWindow();     /* Toggle resource DragWindow. */
  1447. + extern void KeyToggleMoveGroups();     /* Toggle resource VirtualMoveGroups. */
  1448. + extern void KeyToggleSticky();         /* Toggle Sticky State */
  1449. + extern void KeySaveWorkspace();
  1450. X  
  1451. X  extern void KeyMoveVDM();
  1452. X  extern void AddKeyBinding();
  1453. ***************
  1454. *** 56,61 ****
  1455. --- 61,67 ----
  1456. X  #define KD_SUNVIEW      (1<<1)          /* active if mouseless == SunView */
  1457. X  #define KD_BASIC        (1<<2)          /* active if mouseless == basic */
  1458. X  #define KD_FULL         (1<<3)          /* active if mouseless == full */
  1459. + #define KD_VIRTUAL    (1<<4)        /* active if VirtualGrabKeys == True */
  1460. X  
  1461. X  #define KD_BASIC_FULL   (KD_BASIC | KD_FULL)
  1462. X  #define KD_ALWAYS       (KD_SUNVIEW | KD_BASIC_FULL)
  1463. *** BUILD/menu.c    Sat Jun 13 15:51:01 1992
  1464. --- src/menu.c    Sat Jun 13 15:43:24 1992
  1465. ***************
  1466. *** 4,10 ****
  1467. X   *      file for terms of the license.
  1468. X   */
  1469. X  
  1470. ! #ident    "@(#)menu.c    1.2 olvwm version 1/27/92"
  1471. X  
  1472. X  /*
  1473. X   * Based on
  1474. --- 4,10 ----
  1475. X   *      file for terms of the license.
  1476. X   */
  1477. X  
  1478. ! #ident    "@(#)menu.c    1.3 olvwm version 6/13/92"
  1479. X  
  1480. X  /*
  1481. X   * Based on
  1482. ***************
  1483. *** 545,551 ****
  1484. X  
  1485. X      olgx_draw_text(gisNormal, win, mtit,
  1486. X                 mInfo->titleX, mInfo->titleY, 0,
  1487. !                False, OLGX_NORMAL);
  1488. X  
  1489. X      olgx_draw_text_ledge(gisNormal, win,
  1490. X                   BUTT_HSPACE, mInfo->titleHeight - 6,
  1491. --- 545,551 ----
  1492. X  
  1493. X      olgx_draw_text(gisNormal, win, mtit,
  1494. X                 mInfo->titleX, mInfo->titleY, 0,
  1495. !                OLGX_NORMAL);
  1496. X  
  1497. X      olgx_draw_text_ledge(gisNormal, win,
  1498. X                   BUTT_HSPACE, mInfo->titleHeight - 6,
  1499. ***************
  1500. *** 3201,3212 ****
  1501. X      Menu *menu;
  1502. X      int defitem;
  1503. X      Button *pb;
  1504. X     
  1505. X      /*
  1506. X       * find the menu associated with this frame,
  1507. X       * this ensures that the menu is enabled correctly
  1508. X       */
  1509. !     menu = GetEnabledMenu(win->core.client, win->fcore.fullsize,
  1510. X                  False, win->core.client->sticky);
  1511. X  
  1512. X      if (!menu)
  1513. --- 3201,3216 ----
  1514. X      Menu *menu;
  1515. X      int defitem;
  1516. X      Button *pb;
  1517. +     Bool fullsize;
  1518. X     
  1519. X      /*
  1520. X       * find the menu associated with this frame,
  1521. X       * this ensures that the menu is enabled correctly
  1522. X       */
  1523. !     if (win->core.kind == WIN_FRAME)
  1524. !     fullsize = win->fcore.fullsize;
  1525. !     else fullsize = False;
  1526. SHAR_EOF
  1527. true || echo 'restore of olvwm3.Patch02 failed'
  1528. fi
  1529. echo 'End of  part 1'
  1530. echo 'File olvwm3.Patch02 is continued in part 2'
  1531. echo 2 > _shar_seq_.tmp
  1532. exit 0
  1533. -- 
  1534. ---
  1535. Senior Systems Scientist        mail: dcmartin@msi.com
  1536. Molecular Simulations, Inc.        uucp: uunet!dcmartin
  1537. 796 North Pastoria Avenue        at&t: 408/522-9236
  1538.